/**
 * 收藏集API封装
 */

// 导入云对象
const sandart = uniCloud.importObject('sandart')

export default {
	/**
	 * 获取用户收藏集列表
	 * @param {object} params - 查询参数 (可选)
	 * @param {number} [params.page=1] - 页码
	 * @param {number} [params.limit=20] - 每页数量
	 * @returns {Promise<object>} 返回收藏集列表
	 */
	async getCollectionList(params = {}) {
		try {
			const result = await sandart.getCollectionList(params)
			return result
		} catch (error) {
			console.error('[COLLECTION API] getCollectionList error:', error)
			throw error
		}
	},
	
	/**
	 * 创建收藏集
	 * @param {object} params - 创建参数 (必填)
	 * @param {string} params.collection_name - 收藏集名称 (必填)
	 * @param {string} [params.description] - 收藏集描述
	 * @param {string} [params.cover_image] - 封面图片URL
	 * @param {string} [params.background_color] - 背景颜色（支持纯色或渐变色CSS值）
	 * @returns {Promise<object>} 返回创建结果
	 */
	async createCollection(params) {
		try {
			const result = await sandart.createCollection(params)
			return result
		} catch (error) {
			console.error('[COLLECTION API] createCollection error:', error)
			throw error
		}
	},
	
	/**
	 * 更新收藏集信息
	 * @param {object} params - 更新参数 (必填)
	 * @param {string} params.collection_id - 收藏集ID (必填)
	 * @param {string} [params.collection_name] - 收藏集名称
	 * @param {string} [params.description] - 收藏集描述
	 * @param {string} [params.cover_image] - 封面图片URL
	 * @param {string} [params.background_color] - 背景颜色（支持纯色或渐变色CSS值）
	 * @returns {Promise<object>} 返回更新结果
	 */
	async updateCollection(params) {
		try {
			const result = await sandart.updateCollection(params)
			return result
		} catch (error) {
			console.error('[COLLECTION API] updateCollection error:', error)
			throw error
		}
	},
	
	/**
	 * 删除收藏集
	 * @param {object} params - 删除参数 (必填)
	 * @param {string} params.collection_id - 收藏集ID (必填)
	 * @returns {Promise<object>} 返回删除结果
	 */
	async deleteCollection(params) {
		try {
			const result = await sandart.deleteCollection(params)
			return result
		} catch (error) {
			console.error('[COLLECTION API] deleteCollection error:', error)
			throw error
		}
	},
	
	/**
	 * 获取收藏集详情
	 * @param {object} params - 查询参数 (必填)
	 * @param {string} params.collection_id - 收藏集ID (必填)
	 * @returns {Promise<object>} 返回收藏集详情
	 */
	async getCollectionDetail(params) {
		try {
			const result = await sandart.getCollectionDetail(params)
			return result
		} catch (error) {
			console.error('[COLLECTION API] getCollectionDetail error:', error)
			throw error
		}
	},
	
	/**
	 * 添加图案到收藏集
	 * @param {object} params - 添加参数 (必填)
	 * @param {string} params.collection_id - 收藏集ID (必填)
	 * @param {string} params.pattern_id - 图案ID (必填)
	 * @returns {Promise<object>} 返回添加结果
	 */
	async addPatternToCollection(params) {
		try {
			const result = await sandart.addPatternToCollection(params)
			return result
		} catch (error) {
			console.error('[COLLECTION API] addPatternToCollection error:', error)
			throw error
		}
	},
	
	/**
	 * 从收藏集移除图案
	 * @param {object} params - 移除参数 (必填)
	 * @param {string} params.collection_id - 收藏集ID (必填)
	 * @param {string} params.pattern_id - 图案ID (必填)
	 * @returns {Promise<object>} 返回移除结果
	 */
	async removePatternFromCollection(params) {
		try {
			const result = await sandart.removePatternFromCollection(params)
			return result
		} catch (error) {
			console.error('[COLLECTION API] removePatternFromCollection error:', error)
			throw error
		}
	},
	
	/**
	 * 批量从收藏集移除图案
	 * @param {object} params - 批量移除参数 (必填)
	 * @param {string} params.collection_id - 收藏集ID (必填)  
	 * @param {array} params.pattern_ids - 图案ID数组 (必填)
	 * @returns {Promise<object>} 返回批量移除结果
	 * @returns {number} result.data.removed_count - 成功移除的图案数量
	 * @returns {number} result.data.not_found_count - 未找到的图案数量
	 * @returns {array} result.data.removed_patterns - 成功移除的图案列表
	 * @returns {array} result.data.not_found_patterns - 未找到的图案ID列表
	 * @returns {number} result.data.total_patterns - 移除后收藏集中剩余的图案总数
	 */
	async batchRemovePatternsFromCollection(params) {
		try {
			const result = await sandart.batchRemovePatternsFromCollection(params)
			return result
		} catch (error) {
			console.error('[COLLECTION API] batchRemovePatternsFromCollection error:', error)
			throw error
		}
	},

	/**
	 * 重新排序收藏集中的图案
	 * @param {object} params - 排序参数 (必填)
	 * @param {string} params.collection_id - 收藏集ID (必填)
	 * @param {array} params.pattern_orders - 图案排序数组 (必填)
	 * @param {string} params.pattern_orders[].pattern_id - 图案ID
	 * @param {number} params.pattern_orders[].sort_order - 排序顺序
	 * @returns {Promise<object>} 返回排序结果
	 */
	async reorderPatternsInCollection(params) {
		try {
			const result = await sandart.reorderPatternsInCollection(params)
			return result
		} catch (error) {
			console.error('[COLLECTION API] reorderPatternsInCollection error:', error)
			throw error
		}
	},
	
	/**
	 * 批量查询多个图案的收藏状态
	 * @param {object} params - 查询参数 (必填)
	 * @param {array} params.pattern_ids - 图案ID数组 (必填)
	 * @returns {Promise<object>} 返回图案收藏状态映射表
	 * @returns {object} result.data - 收藏状态映射表,key为图案ID
	 * @returns {boolean} result.data[pattern_id].is_collected - 是否已收藏
	 * @returns {array} result.data[pattern_id].collection_ids - 包含该图案的收藏集ID数组
	 */
	async batchGetPatternsCollectionStatus(params) {
		try {
			const result = await sandart.batchGetPatternsCollectionStatus(params)
			return result
		} catch (error) {
			console.error('[COLLECTION API] batchGetPatternsCollectionStatus error:', error)
			throw error
		}
	},

	/**
	 * 根据图案ID获取包含该图案的收藏集列表
	 * @param {object} params - 查询参数 (必填)
	 * @param {string} params.pattern_id - 图案ID (必填)
	 * @returns {Promise<object>} 返回包含该图案的收藏集列表
	 */
	async getCollectionsByPattern(params) {
		try {
			const result = await sandart.getCollectionsByPattern(params)
			return result
		} catch (error) {
			console.error('[COLLECTION API] getCollectionsByPattern error:', error)
			throw error
		}
	}
}
